package com.monlyu.util;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

import com.monlyu.bo.RoleBo;
import com.monlyu.listener.InitDataListener;

/********************************************************************************
 * 
 * <b>功能描述☞</b>验证权限相关的操作全部包含在本Util中<br>
 * 
 * <b>开发公司☞</b>重庆唯尼科技有限公司<br>
 * <b>版权☞</b>本文件归重庆唯尼科技有限公司所有<br>
 * <b>项目名☞</b>monlyu<br>
 * <b>文件路径☞</b>com.monlyu.util.PermissUtil.java<br>
 * <b>开发日期☞</b>2010-2-1 <br>
 * 
 * @author monlyu
 * @since JDK 5
 * @version 1.0.8
 * 
 ********************************************************************************/
public class PermissUtil {

	private static Map<Long, Set<String>> permissCache = new HashMap<Long, Set<String>>();

	/**
	 * 验证权限
	 * 
	 * @author monlyu
	 * @since 2010-2-1
	 */
	public static boolean cheakPermis(boolean isOr, Set<String> permiss) {
		Long userId = WebOptUtil.curUser().getId();
		Set<String> allPermi = permissCache.get(userId);
		if (allPermi == null) {
			final RoleBo roleBo = (RoleBo) InitDataListener.getBeanById("roleBo");
			allPermi = roleBo.getPermissionByUId(userId);
			permissCache.put(userId, allPermi);
		}
		if (isOr) {
			for (String pers : permiss) {
				for (String all : allPermi) {
					if (all.equals(pers)) {
						return true;
					}
				}
			}
			return false;
		}
		return allPermi.containsAll(permiss);
	}

	/**
	 * 清空权限cache，用于用户修改权限后，重新分配
	 * 
	 * @since chendan 2010-3-13
	 */
	public static void clearCache(Long userId) {
		permissCache.remove(userId);
	}
}
